Internet switch box, system and method for internet telephony

ABSTRACT

An Internet switch box connects between a telephone set and a public switched telephone network (PSTN) line, the latter of which is used both for PSTN telephone conversations and for connection to an Internet service provider (ISP). The switch box contains hardware and embedded software for establishing a connection to an ISP and for Internet telephony. When two users, each having an Internet switch box connected to the telephone set, wish to have an Internet telephony conversation, one calls the other over the PSTN. When they agree to an Internet telephony conversation, they signal their Internet switch boxes, by pressing either buttons on the switch boxes or certain keys on the telephone keypads, to switch to Internet telephony. The switch boxes disconnect the PSTN call and connect to their ISPs. Once the switch boxes are on the Internet, they contact each other through a server which supplies Internet protocol (IP) addresses of switch boxes, and the users continue their conversation by Internet telephony. The users can also prearrange to call each other solely by Internet telephony, in which case they do not need to talk to each other over the PSTN.

CROSS-REFERENCE TO RELATED APPLICATION

This is a continuation-in-part of U.S. patent application Ser. No.08/810,148, filed Feb. 25, 1997, whose disclosure is hereby incorporatedby reference in its entirety into the present disclosure.

FIELD OF THE INVENTION

The present invention relates to Internet telephony, i.e., placingtelephone calls over a specific secondary network, such as the Internet,by way of a standard telephone connection using the Public SwitchedTelephone Network (PSTN).

DESCRIPTION OF RELATED ART

The technique of using the Internet to carry on telephone communicationsis commonly referred to as Internet Telephony (IT) or, sometimes, Voiceon the Net (VON). IT is a way to communicate over the Internet thatbypasses PSTN toll connections. IT can be advantageous for individualsand businesses that need or want to communicate extensively with othersoutside of their local calling areas, especially to frequently callednumbers.

IT is typically accomplished by what is commonly referred to as PersonalComputer-Based Internet Telephony (PCIT). PCIT allows users withproperly equipped personal computers to complete long distance telephonecalls to one another over the Internet without incurring a toll charge.To do so, the users must have personal computers that are multimediacapable in terms of possessing a sound card, sufficient processingpower, a high quality microphone, an adequate modem (preferably 14.4 orfaster) and the same specialized software programs, as well as anaccount with an online service or Internet service provider (ISP) forconnection to the Internet via SLIP (the serial-line Internet protocol)or PPP (the point-to-point protocol). Current PCIT techniques are notcompatible with shell accounts, which are accounts in which a user logson through terminal emulation to a remote machine running Unix or thelike and accesses the Internet through that remote machine in text modeby typing commands at a prompt.

Several PCIT software packages are on the market. These packages aremutually incompatible; two users wishing to make a PCIT connection musthave the same software package. Popular PCT software packages includethose marketed under the names “Iphone” and “Web Phone.”

The “Web Phone” software works in the following manner. The userswishing to speak to each other must both be online for the communicationto take place, although they can arrange beforehand to be online at thesame time.

Both users run the software, and the software packages on both computersseek each other by referring to each other's Internet protocol (IP)addresses. An IP address can be static, meaning that each user isassigned a single permanent IP address, or dynamic, meaning that a useris assigned a different IP address every time that user logs on. If theusers both have static Internet protocol addresses, they can simplystore each other's IP addresses beforehand. However, many users,including virtually all users of less expensive ISP's and of onlineservices such as America Online, have dynamic IP addresses. Therefore,before the users can connect to each other, they must log onto a commonserver so that each one can find out the dynamic IP address which hasbeen assigned to the other user. Either way, once the users have eachother's IP addresses, the software packages can communicate with eachother over TCP/IP (transfer control protocol/Internet protocol) ports21845, 21846 and 21847.

Sound originating on one end is digitized via the microphone and soundcard, compressed, and transmitted to the other end as packets over theInternet using TCP/IP, where the packets are decompressed and convertedback into sound via the sound card and speakers.

There are, however, disadvantages associated with the present state ofIT or VON. Besides the hardware requirements and the difficulty thatmany users have with configuring their computers to achieve SLIP or PPPconnections to their ISPs, until such time as PCIT vendors can agree onstandards, the requirement that both users have the same software tocommunicate with each other will remain. Not only is the hardwaredescribed above expensive, but extensive knowledge of computers and theInternet is also required, making IT intimidating to a majority of thepopulation who would otherwise like to take advantage of thiscapability. Them are other disadvantages to PCIT. Its users need toprearrange a time to call each other because both parties must takeproactive measures to connect the call and thereby converse with eachother.

Internet Telephony also sometimes refers to a new service being plannedwhereby individuals or businesses may use or pre-subscribe to a specialaccess number and place their long distance telephone calls by way of along distance carrier who uses the Intent to carry the calls. Thisservice eliminates most of the disadvantages of PCIT, but alsoeliminates most of the advantages, in that toll and/or usage typecharges still apply.

Devices are known for allowing PCIT by letting users initiate aconversation over the PSTN and switching to IT. Such devices exchangeinformation relating to their IP addresses during the PSTN phase of thecall so that the IT phase of the call can be completed. However, in suchdevices, the modem may be set or initialized twice, once for the PSTNphase of the call to exchange the IP address information and once forthe IT phase of the call to connect to the Internet. Setting the modemstwice is time-consuming. Also, such devices cannot be used for callswhich take place entirely by way of IT, since they have no way ofexchanging the IP address related information to locate each other.

SUMMARY OF THE INVENTION

It is an object of the invention to allow a user to make telephone callsvia the Internet without a need for an expensive multimedia-capablepersonal computer.

It is another object of the invention to allow a user to make telephonecalls via the Internet without a need to configure such a computer for aSLIP or PPP connection to the Internet.

It is a further object of the invention to allow a user to select aroute for a telephone call (the Internet, the conventional PSTN, adedicated network, etc.) and to use a single device for the callregardless of which route is selected.

It is a further object of the invention to provide a device and methodfor Internet telephony which are easy to use, do not require a computerand offer superb voice quality.

To these and other ends, the present invention is directed to a terminaldevice or Internet switch box (ISB) for connecting a first telephone setand a second telephone set over a selected one of a primary network anda secondary network, the switch box comprising: primary networkconnecting means for connecting the first telephone set to the primarynetwork; secondary network connecting means for connecting the firsttelephone set to the secondary network and for establishing a connectionover the secondary network between the first telephone set and thesecond telephone set; relay means for (i) connecting, when the relaymeans is in a first state, the first telephone set to the primarynetwork connecting means and for (ii) connecting, when the relay meansis in a second state, the first telephone set to the secondary networkconnecting means; and switching means for receiving a switch-overcommand to switch from the primary network to the secondary network andfor controlling, in response to the switch-over command, (i) the relaymeans to disconnect the first telephone set from the primary networkconnecting means and to connect the first telephone set to the secondarynetwork connecting means and (ii) the secondary network connecting meansto establish the connection over the secondary network between the firsttelephone set and the second telephone set.

A relatively inexpensive interface device, referred to as an Internetswitch box (ISB), is connected to or integrated within the telephone.While the user must possess access to the Internet either directly orvia an Internet Service Provider (ISP) in order to use the ISB, the userwill not be subject to toll charges other than those incurred using thePSTN to establish the Internet telephone call. The user does not need tounderstand how a computer works or how to use any PCIT software, sincethe ISB can be preprogrammed to dial an ISP and to connect via.

SLIP or PPP. The user need only know how to dial the call using normalPSTN dialing procedures and then simply switch the call to an Internetconnection, if available and desirable. Other than the user pressing abutton (either on the ISB or telephone keypad) to initiate the Internettelephone call, the ISB takes care of all connection procedures (i.e.,handshaking) necessary to set up and maintain the Internet telephonecall. While both parties must possess an ISB in order to take advantageof the ISB's IT capabilities, only one party needs to initiate thetelephone call in order to establish the Internet connection, so thatprearrangement is not required.

Advantageously, the selection among networks may be among the PSTN,selected proprietary networks, or the Internet. It should be noted thatthe PSTN utilizes circuit switching techniques whereas, for instance,the Internet makes use of packet switching. Circuit switching wasspecifically designed and is best for analog voice transmissions,whereas packet switching was designed and is best for digital datatransmissions. Regardless, either type of switching may be employed forvoice or data. The calling party uses the PSTN to first establish theconnection between calling and called parties, and then the two partiesdecide whether or not to use their ISB's to re-establish the connectionvia a secondary network such as the Internet. The users will considerconvenience, cost and connection quality in making this choice. If thetelephone call is to another party in the same local calling area, ofshort duration, or one where, regardless of cost, the stability andvoice quality of the connection are essential, then the users typicallyopt to stay on the PSTN connection and not seek to switch to theInternet. Otherwise, the potential cost savings of simply switching toan Internet connection make doing so preferable.

As indicated, an ISB may be incorporated into a telephone or be astandalone adjunct device connected between the telephone and thetelephone line. Additionally, ISB's may be associated with facsimilemachines, wireless telephones and multiple line telephone systems, suchas key telephone and Private Branch Exchange (PBX) systems, and operateto provide multiple users of such Customer Provided Equipment (CPE) theability to designate the secondary network handling of their toll calls.According to one embodiment, the ISB will set up a secondary network orInternet telephone call after the PSTN connection has been establishedand in response to a command to do so by its user(s) as described above.In an alternative embodiment, the ISB may be configured to establish aconnection over a secondary network automatically unless commanded notto prior to the call being placed. In either case the called telephonecan answer or simply ring before the telephone call can be switched to asecondary network or the Internet. As such, the ISB does not interferewith accepted and customary PSTN procedures in that the PSTN portion ofthe telephone call is billable only if there is an answer by a liveperson or an answering machine or voice mail service.

In order to establish a secondary network or Internet connection via theISB, the user will first dial the PSTN telephone number of the intendedcall recipient. Once the called telephone is answered, which is abillable PSTN telephone call of short duration, both parties initiate,via a simple key stroke, the switch to the secondary network. The twoISB's disconnect the PSTN call, and each initiates its own call to theother via the secondary network. If the secondary network is theInternet, the connection typically is by way of an Internet ServiceProvider (ISP) which can be reached, advantageously, by a toll-freetelephone call enabling access to the user's Internet service accountwhich, advantageously, has unlimited use or use charges in an amountmuch lower than the expected PSTN charges. The two ISB's possessinformation (i.e., addresses, passwords, etc.) necessary to re-connectthe telephone call via the secondary network. Each ISB can be programmedto provide call progress tones or to play pre-recorded messages, music,etc., while the users await reconnection. If the call cannot beconnected via the secondary network due to access problems at the ISP orotherwise, then each party is so informed by a recognizable audio signalsuch as a busy signal or a voice recording. Either or both parties can,by pressing appropriate keys, retry their connection via the Internet orreconnect the telephone call over the PSTN. This capability is somewhatanalogous to the redial capability on many conventional telephones.Should two parties seek to avoid PSTN charges altogether, they may usethis same capability to do so via prearrangement. In so doing, eachparty need only input the other party's telephone number in addition topressing the appropriate buttons on the ISB or telephone keypad.Regardless, once the call is connected via the secondary network or theInternet, the parties terminate the call by hanging up, as with any PSTNcall.

The present invention thus implements an embedded approach to IT whichoffers the following advantages. The use of ISB's allows low-cost,easy-to-use, embedded Internet access for telephones. Lower cost isachieved because no PC's are required. Users, many of whom would prefernot to have to configure a PC for Internet access, are offered afamiliar PSTN approach which can identify a called party by that party'sexisting telephone number. This approach also preserves the majoradvantage of IT, namely, the use of low-cost Internet bandwidth.

While the invention is intended primarily for use with single-lineanalog telephone sets, it can be adapted for use with other telephonesystems, such as DID PBX (direct-in-dial private branch exchange) andCentrex service and with analog or digital mobile telephones such ascellular telephones and PCS (personal communication service) telephones.Also, while the ISB can be built to access the ISP through a dial-upconnection, it can alternatively be built to access the ISP throughanother connection, such as an ISDN (integrated services digitalnetwork) connection or a cable modem connection.

BRIEF DESCRIPTION OF THE DRAWINGS

The preferred embodiment will now be described in detail with referenceto the drawings, in which:

FIG. 1 is a flow chart depicting the functional organization of the ISB;

FIG. 2 is a block diagram of an embodiment of the ISB;

FIG. 2A shows a software architecture implemented in the hardware ofFIG. 2;

FIG. 2B shows an alternative design of an ISB;

FIG. 3 shows a front panel view of the ISB;

FIG. 4 shows a rear panel view of the ISB;

FIG. 5 shows a flow chart of the steps involved in placing a callbetween two ISB users;

FIG. 6 shows a flow chart of operations performed by one of the ISB'sduring the call of FIG. 5;

FIGS. 7A-7E show the connections between one or more ISB's and othertelephony components during various calling operations;

FIG. 8 shows a flow chart of the operational states assumed by the ISB'sduring a PSTN-to-Internet call;

FIG. 8A shows a flow chart of the dynamic adjustment performed duringthe Internet phase of a telephone call;

FIG. 9 shows a connection between an ISB and a help desk;

FIG. 9A shows a flow chart of operation of an ISBSS, which is a serverused to complete calls;

FIGS. 10A and 10B show a code listing for the ISBSS;

FIG. 11 shows a state diagram of the ISBSS;

FIGS. 11A-11E show data structures exchanged between the ISBSS and anISB;

FIG. 11F shows an output of a monitoring process performed by the ISBSS;

FIG. 11G shows an error log kept by the ISBSS;

FIG. 12 shows a system defined by multiple users' ISB's, the PSTN, theInternet, the help desk, the ISBSS and various other servers; and

FIG. 13 shows an IT standard which may be implemented with the presentinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

According to a preferred embodiment, the ISB is capable of performingthree major tasks: (1) establishing voice telephone calls via theInternet; (2) sending/receiving voice messages via Internet basedE-Mail; and (3) interfacing with Internet Audio Servers.

During the execution of each task, one of the following five modes ofoperation can be assumed by the ISB:

-   I. Programming Mode: The ISB can be programmed locally or remotely    by a telephone keyset or external keyboard for its desired    operation.-   II. PSTN Voice Mode: The ISB is transparent and does not interfere    with voice communications between two parties involved.-   III. PSTN Data Mode: The ISBs can exchange data via in-band    signaling or otherwise,-   IV. Internet Voice Mode: UDP packets are exchanged to carry voice    over the Internet (“UDP” stands for “User Datagram Protocol,” a    protocol which allows applications to send messages to one another).-   V. Internet Data Mode: TCP or UDP packets are exchanged to carry    information other than voice, such as signaling or IP address    resolution.

These modes of operation are realized by invoking a collection ofresources in the ISB 100 which are under control of the ISB'sapplication module 101. These resources are shown in FIG. 1 anddescribed below:

Telephone Set Controller CSC) 102 is a module which controls allsignaling activities related to a “Plain Old Telephone” (POT), i.e.,on-hook, off-hook, hook-flash, pulse or tone dialing, ringing, ringingtrip detection, etc.

Loop/Start (US) Line Controller (LLC) 103 is a module which controls allsignaling related to a loop start telephone line, i.e., ring detection,line seizure, hold, loop current detection, pulse and tone dialing, etc.

Modem/Facsimile Module (MFM) 104 is a module which provides a modem andfacsimile engine to transmit digital data over PSTN line. The baud ratesof the modem/fax are determined by data exchange requirements.

Voice Compander (=compresser and expander) Module (VCM) 105 is a modulewhich compresses the linearly sampled voice into low bit rate digitalvoice suitable for digital telephone applications. The expander part ofthe module performs the reverse operation.

Tone Generators and Decoders (TGD) 106 is a module which produces anddetects all call progress (e.g., dial, busy, special, etc.) andsignaling (e.g., dual-tone multifrequency or DTMF, multifrequency or MF,etc.) tones.

Voice Players and Recorders (VPR) 107 is a module which records andplays voice prompts under the direction of the ISB.

Digital Switching Matrix (DSM) 108 is a module which enables thedifferent modules (i.e., TSC, LCC, TGD, VPR, etc.) can be connectedtogether via buses 111 and 112.

Signal Processing Services (SPS) 109 is a module which handles signalprocessing services such as echo cancellation, speech recognition, pitchadjustment, etc.

Network Connection Module (NCM) 110 is a module which handles alldigital networking communication between the ISB and other externaldigital sources such as the ISP, another ISB, various Internet resourcesand servers, etc. are handled by this module.

Application Module (AM) 101 is a module which provides the logic flowrequired to execute the above mentioned tasks.

The following describes several of the operations of the ISB:

1. Programming the ISB: The user uses the telephone keypad and menubutton 301 on front panel 302 of the ISB (FIG. 3) to enter theprogramming mode (local or remote). The ISB guides the user through amenu-driven procedure to program the ISB by using voice prompts, guidetones or both. The user inputs the desired information by entering acode with the telephone keypad corresponding to each character to beentered; the instruction manual for the ISB can include a table oftwo-digit codes for all digits, all capital letters, all small letters(thus allowing case-sensitive information to be entered with ease andaccuracy), and any punctuation marks to be used. The ISB can beprogrammed externally (remotely) as well; external programming can beused to input user-specific data and to update the ISB. Localprogramming is especially useful when the user changes ISPs.

Programming can also be accomplished by connecting the ISB to a computersuch as an IBM-compatible PC via a serial link or another appropriatelink. The programming can be done by entering ASCII commands from the PCthrough a standard terminal-emulation program or by software writtenspecifically for this purpose. During manufacture, the ISB is programmedwith its factory settings through a connection to a computer.

2. Telephone call: The calling party picks up the telephone (goesoff-hook) and dials the telephone number of the called party. The ISBmonitors and stores the digits dialed. The called telephone rings and isanswered by a live person, answering machine or voice mail service. Ifthe called telephone is answered by a live person, the two partiesdecide whether or not it is appropriate to switch to the Internet. Theparties may initiate the switch to the Internet by pressing theappropriate code on the telephone keypad or Internet button 303 in theISB itself. The ISBs of the calling and called parties then disconnectthe PSTN connection (this step is not necessary if the ISBs havemulti-line capabilities) and dial their respective ISPs so that each ISBis connected to the Internet. While each ISB connects to the Internet,the person using the ISB hears progress tones, recorded music, or thelike.

Once the ISBs are connected to the Internet, they connect to the server,unless (as is rather unlikely) each party knows that the other party hasa static IP address and has that static IP address on file. Each ISBsends its telephone number and IP address to the server so that theserver has a current IP address corresponding to each telephone number.Each ISB communicates the other party's telephone number to the serverto retrieve the other party's IP address. Once each party knows theother party's IP address, the Internet telephone connection begins, andthe ISBs send voice packets to each other. The ISBs can also resolveeach other's IP address in other ways, such as through e-mail (POP3)servers.

Of course, two users are not precluded from arranging to call each otheron the Internet at a certain time, in which case they avoid PSTN chargesaltogether. However, the use of the ISBs described above offersadditional flexibility in that users can choose to prearrange theirInternet calls or initiate them over the PSTN.

3. Sending and receiving voice mail messages: The user presses menubutton 301 or otherwise issues a command to summon the menu and followsthe prompts to send and receive messages. The digitized voices for suchmessages are sent as binary attachments to e-mail messages; oneubiquitous standard for such binary attachments is called MIME(multimedia Internet mail extensions). Both parties should have e-mailaccess. If the calling party does not already know the called party'se-mail address, the ISBSS or another server can correlate telephonenumbers with e-mail addresses.

The ISB have the capability to dial in to check the e-mail for voicemessages periodically. If a voice message is waiting, the ISB can soindicate by providing a flashing LED, by emitting a special tone whenthe user picks up the telephone, or the like.

4. Internet Audio Server (IAS) calls: These are calls made through theISB to access IASs, or Internet audio servers, which are Internetservers (such as Web or FTP (file transfer protocol) servers) configuredto provide audio information. The user picks up the telephone andpresses the menu button 301 on the ISB. The menu system uses voiceprompts to prompt the user to access different IASs. The ISB thenaccesses the selected IAS either by telephone or by dialing the ISP andconnecting to the IAS over the Internet. The ISB can resolve the IPaddress of an IAS either by accessing the server described above or byaccessing a conventional domain-name server (DNS), which is a server forcorrelating IP addresses and domain names such that the DNS provides anIP address when given a domain name. Once an IAS is known, the ISB canstore the IP address, since servers provided for access by the generalpublic normally have static IP addresses.

5. ISB special server: As noted above, a server is provided to allow theusers of two ISBs to resolve each other's IP addresses. Such a server isknown as an ISB special server (ISBSS), and it correlates telephonenumbers to IP addresses. The ISBSS can look up an IP address for an ISBwhich has previously accessed the server and provided informationcorrelating its telephone number and IP address. The ISBSS does this bysearching by the telephone number, or the least significant digits ofthe telephone number, provided by another party wishing to access thatISB. The ISBSS also uses telephone numbers to find e-mail addresses andpossibly also the IP addresses of IASs. With the ISBSS, the ISBs do nothave to exchange information concerning their IP addresses directlyduring the PSTN phase of a telephone call.

The ISBSS can also collect and report transactions, statistical dataabout attempts, completions, etc. by type of call request and customer,for engineering and marketing purposes. The requirements forinterfacing, processing and data storage with a computer based serversuch as the ISBSS will be readily understood by those skilled in thepresent state of the art. A fuller description of the ISBSS will be setforth below.

6. Compatibility with call waiting, caller ID, and other enhancedtelephone features: According to one embodiment of the ISB, call waitingmust be inactive to assure Internet call connection continuity. Adisable code can be programmed to de-activate this feature when Internettelephone calls are in process. It is presumed that users who are on along distance call do not want to be disturbed. Such disable codes areknown in the art; for example, it is known to configure communicationsoftware to disable call waiting by dialing a code such as *70 andpausing before every call. Another embodiment of the ISB not only allowscall waiting to function but also incorporate caller ID and otherpremium telephone services. For example, an ISB can have integratedcaller ID and can even indicate whether the caller has an ISB, e.g., bysearching by the telephone number through the ISB's database ofcompleted calls.

These and other operations are implemented on hardware and softwarewhich will now be described in detail. According to a preferredembodiment, the ISB is implemented by realizing the described modules byway of an existing personal computer or by repackaging the necessarypersonal computer capabilities into a commercially viable design. In thelatter case, the ISB need not include those hardware or softwarecapabilities which are not relevant to the functions which the ISB isexpected to perform; therefore, the hardware and software can beradically simplified from those of a personal computer. In particular,the ISB can be implemented in hardware and software compatible withMS-DOS, rather than in the considerably more complicated and expensivehardware and software associated with operating systems such as Windows95 or Windows NT. In the alternative, a design based on a digital signalprocessor (DSP) can be employed. Various elements of any designedembodiment such as the modem and vocoder functions can be implementedvia hardware or software equivalents. Those skilled in the art arefamiliar with the computer telephony modules and software librarieswhich can easily implement the disclosed modules. The followingdescribes a commercially efficient approach, and FIG. 2 shows aschematic illustration of this preferred embodiment.

The ISB includes PC-compatible microcontroller (microprocessor) 201,such as an Intel 80186 processor or an equivalent. Microcontroller 201includes integrated timers, direct memory access (DMA) channels, seriallinks and interrupt handlers and is supported by a memory system 202including, for example, ROM, SRAM, flash memory, or EEPROM.Microcontroller 201 and memory system 202 together form the mainprocessing unit for the ISB. Memory system 202, besides providingworking memory for the operation of the ISB, also stores such code as isneeded to operate the ISB. For example, memory system 202 includes codefor establishing an Internet connection; such code is analogous to aWinsock dialer on IBM-compatible PCs.

An internal DC-to-DC power converter 213 provides the proper voltages tothe various components within the ISB. An appropriate external AC-to-DCadaptor interfaces the ISB to the available AC power alternatives foundin the U.S. and elsewhere.

The modem 202 may be implemented most advantageously via a hardwaremodem or modem chip which is connected to the microcontroller 201 andthe Loop Start Line Controller 208 and data access arrangement (DAA)209, both of which are described below. Modem 202 can be a Rockwell 14.4modem or any other suitable modem, although it should preferably becapable of a speed of at least 14.4 and should also preferably beupgradeable as new modem standards emerge.

The vocoder 204 may be most advantageously implemented via hardwarewhich is connected to the microcontroller and which has its own SRAM214. The vocoder provides low bit rate voice compression anddecompression and interfaces the Telephone Set Controller 205.

The Telephone Set Controller 205 includes a Subscriber Line InterfaceCircuit (SLIC) and a CODEC 207 which is, advantageously, connected tothe vocoder. CODEC 207 allows SLIP or PPP connection to the Internet.

Loop Start Line Controller 208 includes a Data Access Arrangement (DAA)209 and is connected to the modem 202 and the telephone line 212.

A 2 FORM C relay 210 is provided, as illustrated in FIG. 2, to connectthe telephone 211 to either the telephone line 212 or the Telephone SetController 205. When telephone 211 is connected to telephone line 212,the ISB functions as a passive pass-through device. When telephone 211is connected to telephone set controller 205, communication betweentelephone 211 and telephone line 212 (i.e., between telephone 211 andthe outside world) passes through and is handled by the circuitry of theISB, including telephone set controller 205, vocoder 204, microprocessor201, modem 202 and loop start line controller 208.

Telephone 211 should preferably not be the sort of telephone which hasits own power source (e.g., cordless telephone or integrated telephoneand answering machine) or which manipulates its signaling (e.g., speakerphone with echo suppression technology).

Microprocessor 201 executes the software architecture shown in FIG. 2A.Software architecture 2A01 is based on a space-efficient embeddedoperating system such as ROM DOS 2A03, which includes applicationcomponent 2A05 and maintenance component 2A07. Maintenance component2A07 interacts with the following drivers. Telephone interface driver2A09 allows the software to interact with telephone set 211. G.723 audioCODEC driver 2A11 interacts with maintenance component 2A07, telephoneinterface driver 2A09 and TCP/UDP driver 2A13. TCP/UDP driver 2A13, IPdriver 2A15 and PPP driver 2A17 serve as modifiable, embedded networkingsoftware for packetizing data and allowing communication with theInternet; thus, they correspond to a Winsock driver on a conventional PCrunning Windows 95, or NT. UART/modem driver 2A19 and telephoneinterface driver 2A21 allow communication with telephone line 212.(“UART” stands for “Universal Asynchronous Receiver and Transmitter” andrefers to a chip used to interface a modem with the rest of the hardwareof a computing device.)

The software can be a combination of commercially available softwareadapted for the ISB and proprietary software written specifically forthe ISB. However, the ISB can use commercial, modified commercial orproprietary software or any combination.

As noted above, the hardware of the ISB can alternatively be implementedwith a DSP chip. Such an alternative implementation is shown in FIG. 2B.As seen in this figure, ISB 2B01 includes microprocessor 2B03, which canbe like microprocessor 201 of the embodiment of FIG. 2. Microprocessor2B03 communicates via data and address buses 2B05 with two 512 kBEEPROM's 2B07 and a 512 kB RAM-2B09 which store the program code, datafor the operation of the ISB (which will be described in detail below)and the like and provide working memory for the operation of the ISB.Microprocessor 2B03 also communicates via data and address buses 2B05with modem or modem chip 2B13, which can be the same as modem or modemchip 202 of the embodiment of FIG. 2, and with DSP chip 2B11. DSP chip2B11 performs compression and decompression and thus performs functionslike those of vocoder 204 of FIG. 2. Modem 2B13 and DSP chip 2B11communicate via telephony interface 2B15 with telephone set 1 and PSTNline 212. Microprocessor 2B03 also communicates with serial flash memory2B17, which stores device data, server data and the like, and with frontpanel 2B19, which has LEDs (to be described in detail below withreference to FIG. 3) for communicating the status of the ISB to theuser.

The ISB, whether constructed according to FIG. 2 or FIG. 2B, is packagedin an enclosure measuring approximately 7 inches by 7.4 inches by 1.4inches and having slots sufficient for ventilation. A fan may also beprovided if needed. The components shown in FIGS. 2 and 2B are mountedon a printed circuit board.

The hardware and software used in the ISB can be analogized in thefollowing manner to the hardware and software of a known PC used for IT:

Function Known PC ISB Digitize voice Sound card CODEC Compress dataCompression algorithm Vocoder or DSP chip executed on CPU Packetize dataWinsock portable networking software ISP access modem modem chipoperating system Windows 95, 98 or NT ROM DOS CPU Pentium ≧133 MHz Intel80186 user interface monitor and keyboard telephone keypad, earpiece

FIG. 3 shows a front or top view of an ISB. Front or top panel 302 mayinclude a logo 305. Status indicator LEDs 304, 306, 307 and 311 may beprovided. Three of these LEDs may be used to indicate whether the poweris on or off the status of an Internet call attempt and whether anymessages are waiting. The fourth can be used in various ways, such as toindicate whether the menu feature is in use or whether an upgrade to theISB software is available (in which case the software can be upgraded ina manner to be described below). Of course, other configurations of LEDscan be used, as can other interfaces such as an alphanumeric LCDdisplay.

Buttons 301 and 303 may be used as already described. As an alternativeto the buttons, the ISB can be configured to listen to the connectionfrom telephone 211 to detect an off-hook state of telephone 211 and tomonitor the digits dialed. If the first digit dialed after the telephoneis picked up is a pound sign (“#”), the ISB knows that the user wants toaccess the ISB's menu system. The ISB generates a voice prompt to promptthe user to select one of the following options by way of the keypad ontelephone 211:

Digit Action 1 Reconnect or retry a call via the Internet 2 Make a newcall via the Internet 3 Listen to voice messages 4 Send a voice message5 Make an Internet test call (to test both the operation of the ISB andthe ISP access) 6 Program the ISB 7 Upgrade the ISB 8 Make an off-netcall 9, 0 Reserved for future use

If the menu system is accessed in this manner, the menu button isunnecessary. Also, because making an Internet call is a menu option, theInternet button is also unnecessary. Thus, the hardware and userinterface of the ISB are simplified, and the ISB has fewer mechanicallyactuable components to break. Once a user becomes familiar with the menusystem, he need not wait for the voice prompt, but instead can simplypick up telephone 211 and dial # and an appropriate digit to perform thefunction desired. Also, to cancel any operation, the user can simplyhang up.

To produce the voice prompts, the ISB can store sound clips in anappropriate format in memory system 202 and play them to the userthrough telephone 211. For example, one such sound clip can be arecording of a voice saying, “To reconnect or retry your telephone callon the Internet, press 1.” Just as conventional software can be suppliedin different language versions, the ISB can be supplied in differentlanguage versions with different stored sound clips.

To cancel or start over, the user hangs up. If the ISB locks up, it canbe reset by unplugging and reconnecting the power supply. Alternatively,the ISB can be equipped with a reset button like those on known PCs.

FIG. 4 shows the back or bottom view of an ISB. Back or bottom panel 402can include telephone jack 404 for connection to telephone 211,telephone jack 406 for connection to telephone line 212, optional port(serial, parallel, universal serial bus (USB), etc.) 408 for connectionto another device such as a PC, and power jack 410. An AC-to-DC poweradapter can be plugged in to power jack 410; the cumulative effect ofthe AC-to-DC power adapter and the DC-to-DC power converter is to supplya +12-volt DC supply to the circuitry of the ISB. Alternatively, the ISBcan contain all of the power conversion circuitry internally, in whichcase back or bottom panel 402 can include a power cord to be pluggeddirectly into a wall outlet. Also, if the ISB is intended for use with aconnection other than to the analog PSTN, such as a connection to anISDN line or to a cable modem, jack 406 can be modified accordingly.Optional port 408 can be used for any operation involving an exchange ofdata between the ISB and some other device, such as programming andtesting the ISB at the factory and for attachment to some peripheralsuch as a digital camera for videophone service or a caller ID unit.

It will be readily apparent from FIG. 4 and the description thereof setforth above that a user can easily install the ISB. The user simplyplugs telephone 211 into jack 404, a cord from telephone line 211 intojack 406 and a power adapter into power jack 410 to supply power from awall outlet. Once the ISB receives power, it undergoes a POST (power-onself test) routine, such as that performed by a conventional PC. Duringthe POST routine, all LED's light up for a predetermined period of time,such as seven seconds, to inform the user that the ISB is workingcorrectly and is in the POST routine. The ISB can also be configured togive an error beep or an error indication through the LEDs if the POSTroutine fails, as is also conventional in PCs. Once the POST routine iscompleted, the ISB enters standby mode, in which it monitors signalsfrom telephone 211 to detect when the telephone is picked up and whichdigits, if any, are dialed.

The ISB includes a housing that can be desk- or wall-mounted. A premiseswiring pattern and the number of telephones sharing the same telephoneline will dictate the ISB's most advantageous installation.

Any or all components of the ISB which rely on code for their operationcan be made software-upgradeable. For example, the modem can besoftware-upgradeable as modem technology advances and as standards suchas the recently announced 56K standard are implemented, and the portionsof the memory system containing code for the operation of themicrocontroller can be software-upgradeable to allow for the H.323Internet telephony standard. When the user issues a command to upgradethe software (e.g., by dialing # to access the menu and then by dialing7), the ISB connects via the user's ISP and the Internet to an upgradeserver to download and install the latest version of the ISB software,an operation which typically takes four to six minutes. The previousversion of the software can be stored to allow the upgrade to be undonelocally with no need for access to the upgrade server; to undo theupgrade, the user dials “*0#”. For example, in a 512 k EEPROM, 192 kBcan be used for DOS and the BIOS (basic input-output system, a set ofroutines which allow a microprocessor to communicate with otherhardware), 384 kB for the current version of the application software,192 kB for a scratch buffer, and 384 kB for the previous version of theapplication software. At the factory, the ISB is provided with twocopies of the same version of the software; one of these copies isoverwritten in the first upgrade, while the other is available to undothe first upgrade. Some upgrades may require assistance from the helpdesk (to be described below), such as those allowing new extra-costfeatures.

Each ISB stores information regarding that ISB. Such information caninclude all information necessary for connecting to the Internet (e.g.,telephone number, user I.D. and password for logging onto the ISP). Theinformation can also include a record of other ISBs with which the ISBhas interfaced, including data for each other ISB such as the telephonenumber and the static IP address if any. The oldest and least usedentries can be purged periodically.

More specifically, the ISB stores device, server, billing, and ownerinformation and a friends directory. The device information is typicallyprogrammed into the ISB at the factory and includes the serial number,the manufacturing date, the hardware version, the software version, andthe feature key, which identifies those features which the ISBimplements. The server information includes the IP addresses for thevarious servers which the ISB needs to access, such as the primary andbackup ISBSSs. The owner information includes the telephone number, theISP access telephone number, any scripting required to log onto the ISP,logon name and password, the domain names or IP addresses for the SMTPand POP servers for e-mail, the e-mail address, and the e-mail password.The SMTP server implements the simple mail transfer protocol (SMTP) forsending e-mail, while the POP server implements the post office protocol(POP) for receiving e-mail. Many ISPs use the same server for bothprotocols. Other mail protocols exist and can be used instead. Theserver and owner information can be programmed locally by the user orover an Internet connection by an agent at a help desk, which isdescribed in detail below. The friends directory is maintainedautomatically and in run-time and has a data structure like that shownin the following table:

Record # Serial # Telephone # E-mail address Counter 1 100011202-555-0102 hisname@someserver.com 25 2 100021 703-555-0103hername@anotherserver.edu 11 *** *** *** *** *** 99  *** *** *** ***

The counter is increased by one for each conversation with a particularperson. When the number of entries to be stored in the friends directoryexceeds the number of allowable entries, the entry with the lowestcounter can be erased. Alternatively, the time and date of the lastconversation can be stored, and the entry whose last conversation hasthe earliest time and date can be erased.

The steps carried out by both parties in placing an IT call using twoISBs are shown in the flow chart of FIG. 5. The calling party calls thecalled party via the PSTN in step 502, and the called party answers instep 504. In step 506, the parties agree to switch to an IT call, and insteps 508 and 510, each party's ISB disconnects (hangs up on the PSTNconnection) and connects to that party's ISP. In steps 512 and 514, eachparty's ISB sends the calling and called telephone numbers and thatISB's IP address to the ISBSS. In step 516, each party gets the otherparty's IP address from the ISBSS, and in step 518, the parties talk viaIT. The call is ended in step 520, and the parties hang up in steps 522and 524.

During the call shown in FIG. 5, each party's ISB operates as shown inFIG. 6. In step 602, the ISB acts as a passive conduit for passing thecall from the telephone to the PSTN. In step 604, the user presses thebutton to switch to an IT call. In step 606, the ISB hangs up on thePSTN call, and in step 608, the ISB calls the user's ISP and logs on. Instep 610, the ISB contacts the ISBSS and sends the calling and calledtelephone numbers and that ISB's IP address. In step 612, the ISBSSsends the ISB the IP address of the other party's ISB, and the ISBs openan IT connection in step 614. In step 616, the user hangs up thetelephone, and in step 618, the ISB logs off the ISP and hangs up fromthe telephone connection to the ISP.

A technique called “double packets” can be implemented to improve voicequality. In this technique, every packet is sent twice. Thus, if packetsare dropped or sent out of sequence, voice quality will most likely notsuffer. Packet dropping and out-of-sequence packet transmission areusually not a problem when the users' ISPs communicate over a commonbackbone or over backbones which have a peering arrangement (i.e.,freely transmit packets over each other's facilities). However, if thetwo ISPs communicate over an NAP (network access point), packet droppingand transmission out of sequence are problems, which double packettransmission corrects.

There is a special kind of call known as a self-test call. When the userdials #5, the ISB initiates a call to a call completions server via theuser's ISP. If the call is completed correctly, the user hears arecording from the call completions server to that effect. Otherwise,the user knows that there may be a problem with the ISB.

To implement the functionality noted above, the ISB can perform any ofseveral calling operations: passive operation, establishing a connectionto the ISP, PTIC (PSTN-to-Internet calling), MMIC (meet-me Internetcalling), checking messages, sending messages, etc. These callingoperations will now be explained with reference to FIGS. 7A-7E and 8.

Passive operation will be explained with reference to FIG. 7A, whichshows ISB 100 connected between telephone 211 and telephone line 212. Inthis operation, the ISB monitors the off-hook status of the telephoneand the dialed digits via the connection to the telephone. Via theconnection to the telephone line, the ISB monitors ring signals(incoming calls). If the first dialed digit is the pound sign (“#”), theISB allows the user to control it via the menu system. Because IT isinvoked through the menu system (and more specifically by dialing “#1”),IT is not invoked unless the first dialed digit is a pound sign. If morethan six digits are called, the ISB operates as a PTIC caller, to beexplained below, while if a ring signal is received from the telephoneline, the ISB operates as a PTIC called party, to be explained below.Once the telephone is placed on-hook, all operations of the ISB arereset except the mode and the digit buffer.

Connection to the ISP will now be explained with reference to FIG. 7B.The modem is initialized, and telephone line 212 is monitored for a dialtone. ISB 100 dials the ISP access number to connect via PSTN 702 tomodem rack 704 of the ISP. The modem of the ISB and a modem reached inmodem rack 704 negotiate the baud rate and the protocol, whereupon ISB100 is connected to the facilities of ISP 706. The ISB and the ISPperform any authentication procedure required, and the ISB selects “PPP”from the ISP's logon menu, if any. The ISB and the ISP then startcommunication by PPP, and PAP (the password authentication protocol) iscarried out if no authentication has been performed before. The ISB isthen connected by TCP to the ISP and thus via line 708, such as a T1 orT3 line or the like, to Internet backbone 710. If the call to the ISPresults in a busy signal, the user can simply wait and call again.Alternatively, the ISB can be configured to store and dial multipleaccess numbers for one or more ISPs.

In case a user's ISP requires a special logon procedure, the ISB canhave a scripting facility. This facility allows the ISB to store a logonscript and to play the script to satisfy the ISP's logon requirements.The scripting language can be the same as that used for dial-upnetworking in Microsoft Windows 95, which is known in the art and willtherefore not be explained here.

The script can be supplied to the ISB in different ways. For example,the user can compose the script on a PC and transfer the script to theISB over a serial connection, or the agent at the help desk (to beexplained in detail below) can remotely program the script into the ISB.Alternatively, the ISB can store a boilerplate script with variouscomponents which can be enabled or disabled remotely by the agent. Stillanother way of programming the script into the ISB is to log onmanually, while the ISB is connected to a PC over a serial connection,and to issue a command to automate the logon, as certain terminalemulation programs do. In any event, it should be possible to allocate1,024 bytes in memory to store any script.

The operation of making a PTIC call will now be explained with referenceto the diagram of FIG. 7C and the flow chart of FIG. 8. In FIG. 8,operational steps or states occurring at the same time are indicated bythe same reference numeral, except suffixed by A (caller A's state), B(caller B's state) or C (user actions or common states).

Caller A uses telephone 211A, ISB 100A and ISP 706A, while caller B usestelephone 211B, ISB 100B and ISP 706B. Once the PTIC call is completed,they communicate over Internet 712, generally after communication overthe Internet with ISBSS 714.

At the time at which user A dials user B in step 802C, user A's ISB ispassive and off hook (step 802A), while user B's ISB is passive (step802B). As user A dials, his ISB records the digits dialed in the digitbuffer in step 804A and enters “PTIC caller” mode in step 806A. Then, instep 808A, user A's ISB becomes “passive,” i.e., acts as a passivepass-through between user A's telephone set and the PSTN. In step 808C,user B's telephone rings, and in step 808B, user B's ISB goes into the“PTIC called” mode. User A talks to user B in step 810C, and once theyagree to an IT call, they both hang up in step 812C. During theseoperations, their ISBs are “passive” (steps 810A, 810B, 812A, 812B).They both pick up their telephones and dial # in step 814C, whereupontheir ISBs go into menu mode in steps 814A and 814B. They both dial 1 instep 816C to initiate ISP connections in steps 816A and 816B. While theyboth monitor (listen for the ring-back tone) in step 818C, their ISBsremain connected to their ISPs in steps 818A and 818B. The ISBs connectto the ISBSS in steps 820A and 820B, and the users hear ring-back tonesin step 820C. The ISB data are exchanged in steps 822A and 822B, and theusers hear a confirmation tone in step 822C. While the users continuetheir conversation in step 824C, the ISBs undergo dynamic adjustment insteps 824A and 824B. If either user's ISP drops that user's connection,that user can simply dial #1 again to be reconnected to the ISP and thusto the other user.

Dynamic adjustment will now be described with reference to FIG. 8A.Dynamic adjustment starts in step 8A02. In step 8A04, the first hundredpackets (about one-third of a second) are monitored to determinetransmission quality. More specifically, the baud rate and thepercentage of dropped packets are measured. In response to thesemeasurements, it is determined in step 8A06 whether one or more of thefollowing need to be adjusted to maximize transmission within thebandwidth provided by the baud rate: the degree of compression (e.g.,6.3, 5.3, 4.8 or 4.1 kB/sec), the packetization (number of frames perpacket, from one through five, which is also a measure of delay) andwhether double packet transmission is turned on or off. For example, ifthe baud rate is 14.4 kilobaud and the percentage of dropped packets isbelow 10%, the ISBs may be adjusted to 6.3 kB/sec, two frames per packetand no double packets. At the same baud rate and a percentage of droppedpackets of 10% or more, the ISBs may be adjusted to 4.1 kB/sec, fiveframes per packet and double packets. If the connection rate is greaterthan 16 kB and the rate of lost packets is 10% or less, the ISBs areadjusted to 6.3 kB/sec compression, one frame and no double packets; atthe same connection rate and a higher rate of lost packets, the numberof frames is increased, and double packets are used. The ISBs mayimplement this dynamic adjustment through a look-up table in thesoftware; i.e., every combination of the baud rate and the percentage ofdropped packets will correspond to a previously calculated and storedset of settings. For example, the look-up table is consulted in step8A08, and the adjustment is made in step 8A10. Alternatively,calculation of the settings may be done on the fly. Once the adjustmentis made, or if no adjustment is required, the dynamic adjustment ends instep 8A12. The ISB can be configured to abort the connection or anyoperation if the baud rate is less than 14.4 kB.

The hardware shown in FIG. 2 or 2B can be used to implement the dynamicadjustment of FIG. 8A. For example, the modem can detect the baud ratein a known manner, while the look-up table can be stored in whatevermemory is provided (RAM, EEPROM, etc.), and the microprocessor canperform the remaining operations.

The ISB can be configured to give the following error messages, whichcan be used by either a user or a technical support person to determinewhy a call has not been completed normally:

Error code Problem 0 No dial tone 1 ISP busy 2 ISP did not answer 3Logon failed, no logon prompt 4 Logon failed, no password prompt 5Insufficient baud rate 6 PPP authentication failed 7 PPP failed 8 PPPtimed out 9 Server did not connect 10 Server did not respond 11 Serverrejected transaction 12 Reception terminated 13 Transmission terminated14 Number not programmed Error codes 20-24 refer to sending a voice mailmessage, to be described below. 20 DNS did not answer 21 SMTP addresswrong 22 SMTP user ID wrong 23 SMTP rejected message 24 SMTPdisconnected Error codes 33-34 refer to receiving a voice mail message,to be described below. 30 DNS does not answer 31 POP address wrong 32POP user ID/password wrong 33 POP stopped sending 34 POP disconnectedError codes 40-42 refer to user programming of the ISB through thetelephone keypad. 40 Character not defined. 41 Character entered is notpermissible where entered. 42 Too many characters.

The error codes can be given to the user in the form of voice prompts.For example, if there is no dial tone, the ISB can play a first soundclip of a voice saying, “I'm sorry, but there is a problem with yourInternet access; please try again. Error code . . . ” and a second soundclip of a voice saying, “zero.” The user can consult the manual to findthe significance of error code 0. In the case of errors which require acall to technical support, the user can make a note of the error code.

Variations on the PTIC call avoid incurring PSTN charges at all. Suchvariations include a previously agreed-upon signal that a particularperson is calling, such as letting the telephone ring twice and thenhanging up, and letting the telephone ring just long enough for callerID information to be sent and then hanging up. The users then call eachother back over the Internet as for a meet-me Internet call, which willnow be described.

The MMIC, or meet-me Internet call, is a simplified version of the PTIC.In the MMIC, the users have previously agreed to call each other at acertain time, so no PSTN handshaking is required.

In the MMIC, both users dial #2 to access MMIC operation in their ISBsvia the menu. User A enters user B's number, which user A's ISB verifiesin its directory, and user A's ISB enters MMIC-caller mode. User Benters user A's number, which user B's ISB verifies in its directory,and user B's ISB enters MMIC-called-party mode. The rest of theconversation proceeds as for a PTIC call, i.e., steps 814A-C to 824A-Cin FIG. 8.

Once two users have already called each other using the ISBs orotherwise added each other to their friends databases, MMIC can be usedwith a speed-dialing technique in which a user dials the last six digitsof the other user's telephone number followed by #, regardless of wherein the world the other user is, thereby avoiding long and confusingdigit sequences for conventional international dialing. The ISB thenmatches the dialed last six digits with the friends data stored in theISB to identify the other ISB which is to be called.

The last six digits can be used for a unique identification of up to amillion other ISBs. While it is possible that a user's friends databasewill contain two entries having the same last six digits, thispossibility is remote. Even if such a situation does arise, the ISB canbe configured to prompt the user to dial more digits to identify thecalled party uniquely.

Checking and sending messages will now be explained with reference toFIGS. 7D and 7E. To check messages, the user dials #3 to enter messagechecking through the menu. The ISB connects to the ISP and then connectsthrough ISP 706 and Internet 712 to POP server 716. Once this lastconnection is achieved, the ISB downloads and plays the first message.The user can then dial 1 to repeat, 2 to go to the next message or 3 toerase a message, much as he would with an answering machine. To send amessage, the user dials #4, whereupon the ISB connects to the ISP andthen connects through ISP 706 and Internet 712 to SMTP server 718 (thefunction of the SMTP server having been described above). The user canthen record a message and then send it via the SMTP server to therecipient's e-mail address. The ISB can be configured to impose a timelimit on outgoing messages (e.g., 60 seconds). The ISB can also beconfigured to poll the ISP periodically (e.g., four times a day or someother interval which is either set in the factory or programmed by theuser) to check for message and to give an indication to the user via anLED or the like when messages are waiting.

The ISB can also be configured to poll the ISP periodically (e.g., fourtimes a day or some other interval which is either set in the factory orprogrammed by the user), whenever a call is completed over IP, or bothto check for message and to give an indication to the user via an LED orthe like when messages are waiting. In one configuration, polling takesplace only when all three of the following conditions are satisfied: (1)the polling period set in the ISB has expired, (2) the telephone has notbeen in use in the last two minutes and (3) no ring signal has beenreceived in the last two minutes. Of course, the ISB can be equippedwith an internal clock, such as those used in conventionalIBM-compatible PCs, to allow periodic polling.

Each voice mail message is stored on the recipient's POP server in theform of an e-mail message with the sender's e-mail address listed in the“From:” field, a standard subject such as “ISB voice mail message” and aMIME attachment of the voice mail message in an appropriate sound fileformat. If the recipient checks his e-mail on the POP server with aconventional e-mail program such as Eudora, he will see such messageinterspersed among conventional e-mail messages. The ISB can distinguishthe voice mail messages from the conventional e-mail messages by thesubject.

The ISBSS will now be described in detail. The functionality describedfor the ISBSS can be implemented on a Sun Microsystems workstationrunning Solaris 2.6 or on any other sufficiently powerful computingdevice running an appropriate operating system. The server programexecuted by the ISBSS can be written in C++ or in any other suitablelanguage. The primary purpose of the ISBSS, but not the exclusivefunction, is to provide connection information for two ISBs to engage inan IT call, since it is contemplated that the ISBs will not exchangeinformation during the PSTN portion of the call. In addition, the ISBSSdocuments each completed call and each request for any other service,such as voice messaging and software upgrade requests, requested fromISBs and supported by the vendor of the ISBs.

The ISBSS is an iterative server. The server functions can beimplemented in a single process and do not require threads. Each IT callinvolves two connections to the ISBSS, one from each of the ISBs. Eachconnection is kept open at most 200 msec after the three-way handshakeis complete. The ISBSS software makes no blocking calls to any kernelfunction unless the ISBSS software is completely idle. In any connectionto the ISBSS, there is one datagram sent in each direction.

The ISBSS provides service to the users of the ISBs by facilitating anexchange of IP addresses between two ISBs whose users want tocommunicate with each other. It does so by accepting a TCP connectionrequest from each client, matching corresponding connection requests andsending the IP address of one of the ISBs to the other ISB. Otherwise,the ISBs might have to communicate their IP addresses to each otherduring the PSTN phase of the call. Such a procedure would require themodems of the ISBs to be set twice, once for the PSTN phase of the calland once for the IT phase of the call, and would render the MMIC callimpossible. The use of the ISBSS allows the ISBs to set their modemsonly once, for the IT phase of the call, and makes the MMIC callpossible.

The operation of the ISBSS will be described with reference to the flowchart of FIG. 9A. In steps 9A02 and 9A04, each ISB sends the ISBSS aconnection request, which is a data string including the following: thatparty's serial number, the other party's serial number, that party'stelephone number, the other party's telephone number, that party's IPaddress, version number and the like. For a PTIC, the calling party'stelephone number is not required. The ISBSS searches for a match betweenthe ISB and a waiting list of ISB's. If there is no match, as in step9A06 (where caller A's request has been received fast), the ISB isappended to the waiting list or queue in step 9A08 and is instructed bythe ISBSS to expect a call from another ISB. If there is a match, as instep 9A10 (where caller B's request has been received second), the ISBmatches the requests in step 9A12 to find the IP address of the otherparty's ISB in step 9A14. In step 9A16, the ISBSS forwards caller A's IPaddress to caller B's ISB, and in step 9A18, caller B's ISB attempts tocontact caller A's ISB using the thus obtained IP address, whereupon theISBSS has no more involvement in the call. Thus, when two parties wantto call each other, the first received connection request is queued, andthe second received connection request is answered with the IP addressof the first received request.

By holding connection requests in a data structure in this manner, theISBSS can avoid holding open a TCP connection to any particular ISB formore than a few microseconds, thus reducing load on the ISBSS. In fact,the ISBSS can break the TCP connection immediately upon receiving theconnection request.

The ISBSS can also send commands to an ISB while processing a connectionrequest. Such instructions can, for example, instruct the ISB to modifythe friends data or other data stored locally in the ISB.

As the number of ISBs in use increases, more ISBSSs can be added.Multiple ISBSSs can coordinate their services; for example, an ISBSS cansend an instruction to an ISB if the connection request should be madeto another ISBSS.

The ISBSS stores telephone numbers in BCD (binary coded decimal)notation with the least significant digit of the telephone number storedin the most significant nibble (four bits) of the first byte (8 bits) ofthe telephone number string. With this approach, the ISBSS can allow thepossibility of six-digit dialing to any ISB in the world. The code toimplement this feature is shown in FIGS. 10A and 10B.

A state diagram of the ISBSS is shown in FIG. 11. The basic design ofthe ISBSS software is that of a finite state machine. The states in themachine are prioritized such that if conditions allow the ISBSS to entermore than one state simultaneously, the higher priority state is enteredfirst. After completing work to be done in any given state, the machinealways returns to the “idle” state. The states are listed below, with apriority number of each state; a higher number indicates a higherpriority.

Idle (0): The default state, in which the ISBSS does housekeeping on itsinternal data structures while waiting for requests for service whichwould send it into some other state.

ISB Connection Request (4): The ISBSS enters this state after completionof a three-way handshake. The ISBSS accepts all pending connectionrequests at this time.

ISB Connection Read (5): The ISBSS enters this state when a particularconnection has data ready to be read by the ISBSS. The data are read,verified and processed. The need to write the given connection isannounced.

ISB Connection Write (6): The ISBSS enters this state only when aparticular connection is ready to write the single datagram which theISBSS writes to each connection. The write takes place, and thedisconnect timer is set to expire in a predetermined time, such as 200msec.

ISB Connection Disconnect (7): The ISBSS enters this state only when thedisconnect timer expires for a particular connection. The ISBSS abortsthe connection and frees up any space used to maintain the connection.

Telnet Connection Request (1): In addition to serving ISB requests, theISBSS has a Telnet-like interface for issuing commands to the ISBSS. TheISBSS enters this state only when the listening service indicates that arequest for connection has been completed. Only one such Telnetconnection is permissible at a time. Each new request results in adropping of the previous request. The commands include —A to set aparameter (such as the connection list time out in seconds and thebilling file size in records, with the syntax being —A parameternamenewvalue), —B to dump the billing file, —C list to list the commandscurrently available, —C set (actual command) to send that command to allconnection requests, —H for help, —L for a parameter list, —M n tomonitor for n minutes if n>0 or to turn off monitoring if n=0, —Q(password) to quit, —T on or —T off to turn testing on or off, and —V(serial number) (status) to add the given serial number to the list ofinvalid serial number if (status)>0 or to remove the given serial numberfrom the list of invalid serial numbers if (status)=0.

Telnet Connection Read (2): The ISBSS enters this state only if acommand has been received on the Telnet connection and is ready to beread.

Telnet Connection Write (3): Everything which needs to be sent to theTelnet connection is buffered asynchronously in a message list. TheISBSS enters this state and sends a single message if the message listis not empty.

In a connection with an ISB, the ISBSS receives a connection datastructure and sends a response data structure. The connection datastructure is shown in FIG. 11A, wherein the tx_data array has astructure shown in FIG. 11B and the tx_BillingData structure is shown inFIG. 11C. The response data structure is sent to every connecting ISBunless the incoming datagram is incorrect and has a structure shown inFIG. 11D, wherein the tx_data array has a structure shown in FIG. 11E.

The ISBSS is able to monitor its own behavior over a specified range ofany number of minutes. The number of minutes is specified by a Telnetcommand described above. The output of the monitoring process is shownin an illustrative example in FIG. 11F. The data shown in FIG. 11F showthe number of connection requests and the manner in which they wereprocessed.

The ISBSS is also able to maintain a log of any errors or suspectsituations which arise in running the server program. A sample log fileis shown in FIG. 11G.

While it is contemplated that the ISBSS will be a public serveraccessible to all ISB users, it is also possible that an ISBSS will besupplied, either as a workstation with the software installed or assoftware for installation on a separately supplied workstation, to anorganization which wishes to maintain its own dedicated ISBSS to supplyconnection information to ISBs within that organization. The ISBs can beprogrammed to use this dedicated ISBSS for calls within the organizationor a public ISBSS for other calls, which are called off-net calls andinitiated by dialing #8. Off-net calls can also be made by users of thepublic ISBSS to call one another via a backup ISBSS when their usualISBSS is down and automatic reroute routines fail.

MMIC calls are treated similarly to PTIC calls. In MMIC calls, it doesnot matter which ISB is the calling ISB and which is the called ISB, sothat the ISBSS can assign these roles arbitrarily. In an MMIC call, theusers may not coordinate the time of their call properly, in which casethe calling party's request remains in the queue in the ISBSS. Eitherthe ISB or the ISBSS can be configured to wait a certain period of timeand request via a voice prompt that the user try the call again later.

In sending voice mail, the ISBSS has no involvement beyond sending a “Goahead and send your voice mail” message, whereupon the ISBSSdisconnects. In the Interne test call, the ISBSS disconnects aftersending a “test complete” message.

The ISBSS can be used to program the ISB automatically as needed. TheISBSS uses the same commands which would be used to program the ISB froma PC over a serial connection. The ISBSS programs server information,e.g., the ISBSS's IP address and the feature key.

Another use of the ISBSS is to notify a customer that an upgrade isavailable. Whenever the ISB contacts the ISBSS, the ISBSS can supply thecurrent software version number, which is compared with the versionnumber of the software in the ISB. If the current version number ishigher, an LED lights up on the ISB to inform the customer of theavailability of the upgrade. The ISBSS supplies the ISB with the IPaddress of the upgrade server from which the upgrade is available andthen disconnects.

In the programming and upgrade notification operations just described,the ISBSS can send the following commands to the ISB:

“Turn on the ‘upgrade available’ LED.”

“Use the accompanying IP address as the new address for the main ISBSS.”

“Use the accompanying IP address as the new address for the backupISBSS.”

The ISBSS can also reject a connection request, for example, if acaller's bill is sufficiently overdue, if the serial number or telephonenumber in the connection request is invalid, or if the ISBSS lacksmemory or process time. When an ISB's attempt to contact the ISBSS failsthree times, the ISB assumes that the ISBSS is not functional and triesto connect to a secondary ISBSS.

Each connection to the ISBSS is accompanied by data describing theservice most recently completed by the connecting ISB (usually about themost recently connected telephone call before the current call request).Such data are written to a log file for future processing.

Other servers besides the ISBSS can be used. For example, a backup ISBSScan be added and can become active when the main ISBSS fails or passescontrol. Also, auxiliary servers such as an upgrade server, an inquiryserver, an H.323 server, a commercial server and the like can be used.

A particular server which can be used with the ISB system is called abilling serer. The billing server maintains information regarding eachcompleted IT call for billing purposes. The ISBSS can supply thisinformation to the billing server. The billing record for each callincludes the caller telephone number, the caller serial number, thecalled telephone number, the called serial number, the start time anddate, the call duration and the quality of the connection. To determinethe quality of the connection, the billing server or another server canmaintain a statistical record, either globally or for each call. Thestatistical record can include such information as the percentage oflost packets, the percentage of late packets, the percentage of packetsout of sequence, the percentage of discarded transmission packets, thepercentage of discarded reception packets, and, for each of the partiesto the call, the baud rate, the compression rate, and the frames.

The billing information is collected for all different transactions ofan ISB. To make this process more efficient, the billing informationabout a transaction is passed to the billing sever at the beginning ofthe next transaction.

The ISB generates a billing record as follows. When the ISB contacts theISBSS for a transaction, the ISB receives the current time from theISBSS and produces a partial billing record which includes the starttime and the telephone number of the other party (the latter field beingleft blank when it is inapplicable, e.g., when checking messages). Atthe end of the transaction, the ISB adds the duration to the partialbilling record to produce a complete billing record, which is providedto the billing server at the beginning of the next transaction.

A feature which a company selling ISBs can provide to enhance thefunctionality of the ISBs is called the “help desk.” Through the helpdesk, customer service agents can assist customers by remotelyprogramming their ISBs, answering questions about the service, upgradethe software in the ISBs, etc.

FIG. 9 shows a connection between a customer's location 900C and anagent's position 900HD at the help desk. The help desk has one or morecall center positions 900HD, each equipped with a standard telephone 211HD, a computer or data terminal 908 and a specially equipped ISB 100HDconnected to computer or data terminal 908 via a serial port or otherconnection such as serial port 408 of FIG. 4. The customer connects tothe help desk via PSTN 902, customer's ISP 904C, Internet 906 and helpdesk's ISP 904HD. The agent can use ISB 100HD to access, program,upgrade and test customer's ISB 100C. The agent can change the datastored in ISB 100C (for example, the device data, server data and ownerdata). The help desk does not have to change the data maintainedautomatically by ISB 100C or by other servers (e.g., friends data,billing data and service records). Also, the agent and the customer cantalk via telephones 211C and 211HD, either in voice over data via theInternet or in voice-only mode via the Internet or the PSTN, so that theagent can answer the customer's questions. The user can initiate avoice-over-data conversation by dialing *0#.

Programming of the ISB from the help desk takes place in the followingmanner. The customer and the agent engage in a conversation, either byIT or by the PSTN. If the agent decides that the customer's ISB 100C isto be remotely programmed from the help desk, the agent instructs thecustomer to dial *0# into telephone 211C. The agent verifies that thecustomer's ISB 100C has accepted this code to go into voice-over-datamode and enters a similar command to set his own ISB 100HD tovoice-over-data mode. The ISBs 100C and 100HD perform a modemhandshaking and then start a PPP link between them. Once the link isestablished, the bandwidth is shared between voice and data, and theagent and the customer can resume their conversation while the agentaccesses, examines and programs the customer's ISB 100C.

The agent's computer or data terminal 908 has software to allow theagent to access, examine and program the customer's ISB 100C in thismanner. The software displays a window into which the agent enters hisown identifying information, device data such as the serial number,feature key and hardware and software versions, server IP addresses, andthe user data. The window also has buttons to allow the agent to readthe data stored in the customer's ISB, write data to the customer's ISB,activate voice-over-data mode, save information about the customer's ISBto disk for future reference, and load that information from disk. Thewindow offers menu options to allow the agent to log on and off hisposition at the help desk, to change the serial port settings for hisposition at the help desk, to select the source for data being accessedas local (the help desk position) or remote (the customer's ISB) and thelike.

As those skilled in the art will readily appreciate, the variouscomponents described above form a coherent system which is shown in FIG.12. In this system, multiple customer locations 900C and help desklocation 900HD, which have already been described, interface via PSTN902 and ISPs 904C, 904HD with one another and with ISPs 904S, whichallow access to one or more ISBSSs 1201, one or more e-mail (POP, SMTP,IMAP (which is another mail protocol), etc.) servers 1204, one or morebilling servers 1206, one or more Web servers 1208 and any other serversor other system components which can be used.

The present invention can be adapted for use with the H.323communication standard, which will now be described briefly withreference to FIG. 13. The H.323 standard provides interoperability amongproducts from multiple vendors. The standard includes the H.320 standardfor ISDN (integrated services digital network) communication and H.324for the PSTN. The standard provides for encapsulation of UDP packets(which have been identified above) as RTP (real-time transport protocol)packets.

FIG. 13 shows various components of an H.323 system. Those skilled inthe art will readily appreciate that not all components shown in FIG. 13will necessarily be present.

H.323 system 1300 is implemented on LAN (local-area network) 1302.Terminals 1304 are used by users to communicate; each terminal 1304 caninclude an ISB, with or without video capabilities, or an PC with audioor audio-video capabilities. Gateway 1306 provides interoperability withother networks, e.g., over PSTN 1308 or ISDN line 1310. MCU (multipointcontrol unit) 1312 control conferencing among three or more terminals.Gatekeeper 1314 performs network functions such as bandwidth control andtranslation between IP addresses and names by which terminals 1304,gateway 1306, etc. are known to LAN 1302.

The ISB software is written such that at any time during the operationthe user can terminate whichever operation is in progress by simplyhanging up the telephone and can hear a dial tone by picking up thetelephone again. There might be instances in which the hang-up is notrecognized by the software because of unexpected interactions betweenthe software and real-life conditions. To prevent the ISB from lockingup and possibly blocking the telephone from the user, a watchdog timercan be implemented to recover from these situations and reset thesystem. In all other instances in which the ISB recognizes that an errorhas occurred, it plays a prompt which in general terms explains thecondition followed by an error code which helps the user to troubleshootthe problem by referring to the manual or which helps the agent at thehelp desk to diagnose the problem. The error codes have been listedabove, although, of course, other error codes could be assigned asneeded.

In the instances in which the ISB expects the user to enter data or hangup, a timer can be set with a predefined time-out value. If the userdoes not respond within time-out period, the prompt is repeated. Thisprocess can be repeated up to three times, and if there is no responsefrom the user, then the ISB goes on-hook and, after a short delay, backoff-hook.

The ISB can be tested at the factory or elsewhere in the followingmanner. The ISB is connected to a telephone and to a computer in themanner described above. The computer has appropriate testing softwareinstalled thereon. The tester makes a call through the ISB to a secondISB which has been tested and is known to work properly. Any aspect ofoperation of the ISB under test can be tested, and a report can begenerated.

The foregoing detailed description covers interfacing a wireline analogversion of the ISB and is illustrative of the various preferredembodiments of the present invention which also include wireline digitalversions which are ISDN or LAN based as well as wireless analog ordigital versions, either cellular or PCS (personal communicationsystems). The ISB can also be adapted to work with facsimile machines.The invention is not limited to embodiments using a SLIP, PPP or otherdialup connection to the Internet; instead, any connection to theInternet or another secondary network, such as a T1 line or a cablemodem, can be used. Also, while it is contemplated that a caller willusually want to speak to one called party at a time, conference callscan be implemented with no difficulty. In addition, ISBs can be madewith inexpensive digital cameras and LCD screens to allow videophoneservice by using Internet audiovisual conferencing software such asCU-Seeme. ISBs can also be provided with encryption. Moreover,modifications disclosed separately can be combined in any technicallyfeasible manner, while modifications disclosed together can beimplemented separately wherever technically feasible. It will beappreciated that numerous variations and changes can be made not only toprovide a range of services but also to interface the many differentdevices used to access the PSTN, including personal computers andlaptops, without departing from the scope of the invention as defined inthe accompanying claims.

1-52. (canceled)
 53. A method for connecting a first communicationapparatus with a second communication apparatus, comprising: providing afirst address of the first communication apparatus to the secondcommunication apparatus over a secondary network, the firstcommunication apparatus communicating over a primary network as a firstconnection; and establishing a second connection between the firstcommunication apparatus and the second communication apparatus over thesecondary network using the first address.
 54. The method of claim 53further comprising: communicating, via the second connection,information between the first communication apparatus and the secondcommunication apparatus.
 55. The method of claim 53 further comprising:disconnecting at least one of the first communication apparatus and thesecond communication apparatus from the primary network after the secondconnection is established.
 56. The method of claim 53 furthercomprising: disabling the first connection after the second connectionis established.
 57. The method of claim 53 further comprising: providinga second address of the second communication apparatus over thesecondary network, wherein the second connection is established using atleast one of the first address and the second address.
 58. The method ofclaim 53 further comprising: providing a second address of the secondcommunication apparatus over the secondary network, wherein the secondconnection is established using the first address and the secondaddress.
 59. The method of claim 53, wherein the first communicationapparatus is a telephone terminal.
 60. The method of claim 53, whereinthe second communication apparatus is an internet server.
 61. The methodof claim 53, wherein the first address of the first communicationapparatus includes identification information.
 62. A communicationapparatus comprising: processing circuitry configured to: provide afirst address of a first communication apparatus to a secondcommunication apparatus over a secondary network, the firstcommunication apparatus communicating over a primary network as a firstconnection; and communicate with the second communication apparatus overthe second network via a second connection, the second connection beingestablished using the first address.
 63. The apparatus of claim 62, theprocessing circuitry being further configured to: disconnect the firstcommunication apparatus from the primary network after the secondconnection is established.
 64. The apparatus of claim 62, the processingcircuitry being further configured to: disable the first connectionafter the second connection is established.
 65. The apparatus of claim62, the processing circuitry being further configured to: receive asecond address of the second communication apparatus over the secondarynetwork; and transmit the first address of the first communicationapparatus over the secondary network.
 66. The apparatus of claim 65,wherein the second connection is established using the first address andthe second address.
 67. A communication apparatus comprising: processingcircuitry configured to: receive a first address of a firstcommunication apparatus over a second network, the first communicationapparatus communicating over a primary network as a first connection;and establish communication with the first communication apparatus overthe second network via a second connection, the second connection beingestablished using the first address.
 68. The apparatus of claim 67,wherein the first address is received from the first communicationapparatus.
 69. The apparatus of claim 67, the processing circuitry beingfurther configured to: disconnect the second communication apparatusfrom the primary network after the second connection is established. 70.The apparatus of claim 67, the processing circuitry being furtherconfigured to: disable the first connection after the second connectionis established.
 71. The apparatus of claim 67, the processing circuitrybeing further configured to: receive the first address of the firstcommunication apparatus over the secondary network; and transmit asecond address of the second communication apparatus over the secondarynetwork.
 72. The apparatus of claim 67, wherein the second connection isestablished using the first address and the second address.
 73. A methodfor communicating with an apparatus comprising: providing, viaprocessing circuitry, a first address of a first communication apparatusto a second communication apparatus over a secondary network, the firstcommunication apparatus communicating over a primary network as a firstconnection; and communicating, via the processing circuitry, with thesecond communication apparatus over the second network via a secondconnection, the second connection being established using the firstaddress.
 74. A method for communicating with an apparatus comprising:receiving, via processing circuitry, a first address of a firstcommunication apparatus over a second network, the first communicationapparatus communicating over a primary network as a first connection;and establishing, via the processing circuitry, communication with thefirst communication apparatus over the second network via a secondconnection, the second connection being established using the firstaddress.